package net.csdn.business.common.domain.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author wanghang
 * @version 1.0
 * @date 2022/9/28 11:38
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ClaCheckVo implements Serializable {

    /**
     * 是否需要签署CLA协议
     */
    private boolean required;

    /**
     * 是否已签署
     */
    private boolean signed;

    private String claId;

    /**
     * 签署地址
     */
    private String signAddr = "";

    private String desc = "";

    /**
     * 所属CLA协议
     */
    private Cla cla;

    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Cla {
        /**
         * CLA协议ID
         */
        private String objectId;

        /**
         * CLA协议名称
         */
        private String claName;

        /**
         * CLA协议生效状态 (1-启用 0-停用 -1已删除)
         */
        private Integer status;

        /**
         * 所属组织ID
         */
        private String orgId;

        /**
         * 所属组织命名空间
         */
        private String orgPath;

        /**
         * 组织跳转地址
         */
        private String orgWebUrl;

        /**
         * 组织头像
         */
        private String orgLogo;

        /**
         * CLA协议版本号
         */
        private String version;

        /**
         * 是否需要重新签署 (1-是 0-否)
         */
        private Integer needResign;

        /**
         * 协议内容
         */
        private String claContent;

        /**
         * 协议内容MD
         */
        private String claContentMd;

        /**
         * 是否变更请求cla检查 (1-是 0-否)
         */
        private Integer mrCheckSwitch;

        /**
         * 是否组织成员cla检查 (1-是 0-否)
         */
        private Integer memberCheckSwitch;

        /**
         * 当前用户信息
         */
        private User user;

        /**
         * 关联仓库
         */
        private ClaVo.Repo repo;

    }

    @Data
    public static class User {
        /**
         * 用户ID
         */
        private String id;
        /**
         * 用户名
         */
        private String username;
        /**
         * 姓名
         */
        private String name;
        /**
         * 昵称
         */
        private String nickname;
        /**
         * 手机号
         */
        private String phone;
        /**
         * 邮箱
         */
        private String email;
    }

}